約 4,065,252 件
https://w.atwiki.jp/isoroku_be/pages/72.html
情報 作者名:fuji/ムラり 引用元:なでしこプログラム掲示板「ダイアログエディタ」 概要 ムラりさんのダイアログエディタをなでしこに移植しました。 ●MessageBox の様々なダイアログのソースを確認しながら出力することができます。 解説 //本体 #ダイアログエディタ !母艦設計=『母艦の可視はオフ』 母艦について 背景色はウィンドウ背景色。//RGB(128,128,255) タイトルは「APIダイアログエディタ 1.28」 サイズは「60,20,600,555」 スタイルは「枠固定」 オフに最大化ボタン有効変更 部品間隔=8 文字サイズ=10 ボタンリストは「[OK] [OK][キャンセル] [中止][再試行][無視] [はい][いいえ][キャンセル] [はい][いいえ] [再試行][取り消し]」 OSで条件分岐。 「Windows Me」ならば、ボタンリストは、ボタンリスト 「{~}[キャンセル][再実行][続行]」 「Windows 2000」ならば、ボタンリストは、ボタンリスト 「{~}[キャンセル][再実行][続行]」 「Windows XP」ならば、ボタンリストは、ボタンリスト 「{~}[キャンセル][再実行][続行]」 リセット部品リストは「ボタンラジオ{~}アイコンラジオ{~}デフォルトラジオ 母艦チェック{~}ヘルプボタン{~}手前{~}逆チェック」 ボタンラジオとはラジオ。 ボタンラジオについて 位置は「10,10」 幅は250。 高さは290。 アイテムはボタンリスト。 値は0。 クリックした時は もし、(OS!=『Windows XP』)かつ((ボタンラジオの、値)=6)ならば 母艦チェックの値はオフ。 アイコンラジオとはラジオ。 アイコンラジオについて 位置は(ボタンラジオの右側) 幅は140。 高さは190。 アイテムは「なし [×]アイコン [?]アイコン [!]アイコン [i]アイコン」 値は、0。 デフォルトラジオとはラジオ。 デフォルトラジオについて 位置は(アイコンラジオの下側) 幅は240。 高さは190。 アイテムは「一番目のボタンがデフォルト 二番目のボタンがデフォルト 三番目のボタンがデフォルト 四番目のボタンがデフォルト」 値は0。 ヘルプボタンとはチェック。 ヘルプボタンについて テキストは「ヘルプを追加(無意味)」 位置は(ボタンラジオの下側) 幅は200 手前とはチェック。 手前について テキストは「常に手前に表示」 位置は(ヘルプボタンの下側) 幅は130 母艦チェックとはチェック。 母艦チェックについて テキストは「母艦をクリックできなくする」 位置は(手前の下側) 幅は250 クリックした時は もし、OSが『Windows XP』でなければ、 もし、(母艦チェックの値)がオンならば、 もし、(ボタンラジオの値)が6ならば、ボタンラジオの値は0。 逆チェックとはチェック。 逆チェックについて テキストは「ダイアログを逆にする」 位置は(母艦チェックの下側) 幅は250。 実行ボタンとはボタン。 実行ボタンについて テキストは「作 成」 位置は(アイコンラジオの右側) 幅は97 高さは60 クリックした時は~コード作成。 リセットボタンとはボタン。 リセットボタンについて 位置は(実行ボタンの下側) 幅は97 高さは35 クリックした時は リセット部品リストを反復 「{それ}の値は0」をナデシコする。 「ダテエディタ{~}ダタエディタ」を反復 (対象 『のテキストは「」』)をナデシコする。 プレビューボタンとはボタン。 プレビューボタンについて 位置は(リセットボタンの下側) 幅は97 高さは35 クリックした時は 最終コード取得。 「MessageBox((母艦の、ハンドル),ダテエディタ,ダタエディタ,${最終コード})。{選択肢}」をナデシコする。 使い方ボタンとはボタン。 使い方ボタンについて テキストは「使い方」 位置は(プレビューボタンの下側) 幅は97 高さは40 クリックした時は~ヘルプ表示。 ダイアログタイトルラベルとはラベル。 ダイアログタイトルラベルについて フォントサイズは10 位置は(逆チェックの下側) ダタエディタとはエディタ ダタエディタについて 位置は(ダイアログタイトルラベルの右側) Xは150 幅は360 フォントサイズは10 IMEは「IMEオン」 そのキー押した時は もし、ダタエディタの押された仮想キー=13/*ENTER*/ならば、ダテエディタに注目 ダイアログテキストラベルとはラベル。 ダイアログテキストラベルについて フォントサイズは10 位置は(ダイアログタイトルラベルの下側) ダテエディタとはメモ。 ダテエディタについて 位置は(ダイアログテキストラベルの右側) Xは150 幅は360 高さは66 フォントサイズは10 IMEは「IMEオン」 母艦の可視はオン。 待機。 ●ヘルプ表示 「」を「オンラインヘルプ{~}このプログラムについて{~}アイコンについて{~}デフォルトとは」でボタン選択。 条件分岐。 「オンラインヘルプ」ならば、「http //www.realintegrity.net/~fuji/jprogram/nadesiko/dialog.html」を起動。 「このプログラムについて」ならば、プログラムの内容。 「アイコンについて」ならば、アイコンの意味。 「デフォルトとは」ならば、デフォルトの意味。 ●プログラムの内容 「このプログラムでは」と言う。 MessageBox((母艦の、ハンドル),「Version 1.00」,「(サンプルメッセージ)」,$40)。 MessageBox((母艦の、ハンドル),「文章が変更されています。保存しますか?」, 「(サンプルメッセージ)」,$23)。 「のような特殊なダイアログを表示するためのソースを生成できます。」と言う。 「基本的な使い方: タイトルとテキストを入力して、アイコンを選び、プレビューボタンを押すと、 どんなダイアログが出るか見ることができます。 作成ボタンを押すと、そのダイアログを出すためのソースを貼り付けられます。 このとき、APIを貼り付けるかと出ますが、APIはプログラム中に一つ貼っておけば十分です。 また、APIはプログラムのどこにあってもかまいません。」と言う。 ●アイコンの意味 「アイコンには[×][?][!][i]の4つがあります。」と言う。 MessageBox((母艦の、ハンドル),「エラーが発生しました。 ([×]アイコンはエラーなど、プログラムに問題が発生した時に使います。)」,「(サンプルメッセージ)」,$10)。 MessageBox((母艦の、ハンドル),「文章が変更されています。保存しますか? ([?]アイコンはユーザーにたずねる時に使います。)」,「(サンプルメッセージ)」,$23)。 MessageBox((母艦の、ハンドル),「同名のファイルが存在します。上書きしますか? ([!]アイコンはユーザーに警告する時に使います。)」,「(サンプルメッセージ)」,$30)。 MessageBox((母艦の、ハンドル),「Version 1.00 ([i]アイコンは情報を表示する時に使います。)」,「(サンプルメッセージ)」,$40)。 ●デフォルトの意味 「デフォルトというのは、フォーカスをどこに合わせるか、と言うものです。 たとえば{[}テキストが変更されています。保存しますか。{]}というのを [はい][いいえ][キャンセル]で尋ねる時、保存するのがいいだろうと言うことなら、 1番目([はい])にデフォルトを、終了を留まらせるのがいいだろうと言うことなら、 3番目([キャンセル])にデフォルトを合わせます。 実際に見てみましょう」と言う。 MessageBox((母艦の、ハンドル),「テキストが変更されています。保存しますか。 (1番目にデフォルト)」,「(サンプルメッセージ)」,$33)。 MessageBox((母艦の、ハンドル),「テキストが変更されています。保存しますか。 (3番目にデフォルト)」,「(サンプルメッセージ)」,$233)。 ●MessageBox(h,t,c,u) =DLL("user32.dll", "int MessageBoxA( HWND hWnd, // handle of owner window LPCTSTR lpText, // address of text in message box LPCTSTR lpCaption, // address of title of message box UINT uType // style of message box )")#" ●コード作成 /*戻ってくる値 0エラー1OK 2キャンセル3中止 4再試行5無視 6はい7いいえ 10再実行11続行*/ 最終コード取得。 「メッセージボックスのAPI(●MessageBox(h,t,c,u))も貼り付けますか? これはソース中に一つあれば十分です。」と二択。 もし、それがはいならば APIは改行 『●MessageBox(h,t,c,u) =DLL("user32.dll", "int MessageBoxA( HWND hWnd, // handle of owner window LPCTSTR lpText, // address of text in message box LPCTSTR lpCaption, // address of title of message box UINT uType // style of message box )")#" 』 違えば、APIは「」 ダタエディタの`「`を『{「}』に置換して`」`を『{」}』に置換してタイトルに代入。 ダテエディタの`「`を『{「}』に置換して `」`を『{」}』に置換してダイアログテキストに代入。 最終ソース=「MessageBox((母艦の、ハンドル),{[}{ダイアログテキスト}{]},{[}{タイトル}{]},${最終コード})。{選択肢}」 最終ソース APIをコピー。 デバッグエディタハンドルに『paste』をCOPYDATA送信。 戻る。 ●最終コード取得 最終コードはボタンラジオの値。 最終コードで条件分岐。 0ならば、選択肢は「」 1ならば、選択肢は改行 『もし、それが1/*OK*/ならば、「はいが押されました」と、言う。』 改行 『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』 2ならば、選択肢は改行 『もし、それが3/*中止*/ならば、「中止が押されました」と、言う。』 改行 『もし、それが4/*再試行*/ならば、「再試行が押されました」と、言う。』 改行 『もし、それが5/*無視*/ならば、「無視が押されました」と、言う。』 3ならば、選択肢は改行 『もし、それが6/*はい*/ならば、「はいが押されました」と、言う。』 改行 『もし、それが7/*いいえ*/ならば、「いいえが押されました」と、言う。』 改行 『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』 4ならば、選択肢は改行 『もし、それが6/*はい*/ならば、「はいが押されました」と、言う。』 改行 『もし、それが7/*いいえ*/ならば、「いいえが押されました」と、言う。』 5ならば、選択肢は改行 『もし、それが4/*再試行*/ならば、「再試行が押されました」と、言う。』 改行 『もし、それが2/*取り消し*/ならば、「取り消しが押されました」と、言う。』 6ならば、選択肢は改行 『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』 改行 『もし、それが10/*再実行*/ならば、「再実行が押されました」と、言う。』 改行 『もし、それが11/*続行*/ならば、「続行が押されました」と、言う。』 違えば、選択肢は「」 それはアイコンラジオの値。 最終コード=最終コード+それ*10。 それはデフォルトラジオの値。 最終コード=最終コード+それ*100 それは手前の値。 最終コード=最終コード+それ*40000。 それはヘルプボタンの値。 最終コード=最終コード+それ*4000。 それは母艦チェックの値。 最終コード=最終コード+それ*2000。 それは逆チェックの値。 最終コード=最終コード+それ*100000。 戻る。 名前 コメント
https://w.atwiki.jp/akitatnp/pages/26.html
TNP子のページ TNP子とは? 誰かが黒板にたまたま落書きしたことで生まれたTNPのマスコットキャラクター(仮)。 現在設定があまり決まってないですがこれからTNPの作品等でどんどん活躍していく・・・予定です。 プロフィール 公式ページから引用。 名前 TNP子 生年月日 2005年4月1日 出身地 秋田大学のとある教室の黒板 仕事 TNPの平和を守り、プログラミングの楽しさを教える仕事。 性格 温和。ゆるふわプログラマガールを目指し日々精進している。 趣味 プログラミング。C++, D, Python, JavaScript, Haskellなど 様々な言語に興味を示している。 Level 0x14 好きな言葉 Hello World! その他設定など 現在考えられている次回作に出てくるキャラクターとか設定 名前:TNP子 説明:ダウナー系 センセイに作られたウイルス駆除特化型プログラム パッチで様々な姿に変わる 決め台詞は「対策(パッチ)完了したわ…」だとかそうじゃないとか 生まれてから18フレーム以上だよ!安心だね!(意味深) 名前:ぬんぽんさん 説明:だるい、めんどくさい な性格に。 外のセカイと電子世界両方知っている謎の存在。 名前:イナージ 説明:語 り つ く せ な い 名前:座屋 もり子(森、守など漢字表記はまだ決定してない) 説明:完全オリジナルキャラクター 細目、常に座っている、イナージを利用の嫁 外のセカイに強い関心がある 名前:センセイ 説明:TNP子の開発者。謎。Sound Only。多分謎の組織「TNP」の一員だと思われる。 名前:みのり 説明:メモリ関連に強いアホの娘。 名前:TNP(組織) 謎の組織。最新作でガーランドの誕生に関係していることが判明。 名前:Mr.ドラゴン 息子、娘がいる。 最近世界に異常が起きていることを感じ取りガーランドウォーズに参戦。 名前:ガーランド 龍と鳥のハーフ。何かを掘り当てると快感のあまり叫ぶ。 TNP子が主人公のゲームよりもガーランドが主人公のゲームのほうが多い。(予定) 名前:里のカビ ガーランドと似た性質を持つ。
https://w.atwiki.jp/ninjatrader/pages/106.html
定義 高度なストラテジーのイベント・ドリブン・プログラミングは、経験豊かなプログラマ向けに用意されている。 NinjaTraderは、ストラテジーのロジックの処理がバーを基準にしたものに限定されないという点において、伝統的なストラテジー開発プラットフォームとは異なる。NinjaTraderは真にリアルタイムのプラットフォームであり、それ故にリアルタイムのイベントによって駆動することができる。 OnBarUpdate()およびInitialize()メソッドに加えて、NinjaScriptは次の高度なイベント・ドリブン・メソッドを用意している: OnConnectionStatus() - 接続状態が変化した時に呼び出される OnExecution() - ストラテジーが生成した注文が約定された時に呼び出される OnFundamentalData() - ファンダメンタル・データが変化した時に呼び出される OnMarketData() - レベル1の市場データ・ストリームが変化した時に呼び出される OnMarketDepth() - レベル2の市場データ・ストリームが変化した時に呼び出される OnOrderUpdate() - ストラテジーが生成した注文が状態を変化する時に呼び出される OnPositionUpdate() - ストラテジーが生成したポジションが変化するときに呼び出される OnStartUp() - スクリプトが起動する時に一度だけ呼び出される OnTermination() - スクリプトが終了される時に一度だけ呼び出される
https://w.atwiki.jp/isoroku_be/pages/29.html
情報 作者名:TM 引用元:なでしこプログラム掲示板「シークバー」 概要 WMPっぽいシークバーが使えます。 解説 イベント ・シーク始めた時 …「マウス押した時」に相当 ・シーク完了した時 …「マウス離した時」に相当 ・変更した時 注: 「マウス押した時」「マウス動かした時」「マウス離した時」 を使うと正常に動作しません。 変数 ・値 ・最大値 ・最小値 ・値範囲 ・背景色 ・反転色 …現在位置の左側の色 ・ドラッグ中 本体 ●カーソルアイコン取得(ファイルの種類の) = DLL("user32.dll","DWORD LoadCursorA(BOOL,DWORD)") ●マウスカーソル設定(Iに) = DLL("user32.dll","DWORD SetCursor(DWORD)") ■シークバー +GUI部品 +マウスプロパティ ・ドラッグ中{=0} ・作る~ オブジェクトは、VCL_CREATE(自身, 名前, VCL_GUI_IMAGE) 自身→マウス移動した時は~ もし、自身→有効=0なら待機。 (0の32649のカーソルアイコン取得)にマウスカーソル設定。 もし、ドラッグ中=1なら、分割点=マウスX 自身→マウス押した時は~ もし、自身→有効=0なら待機。 もし、押されたボタン 「左」なら待機。 分割点=マウスX ドラッグ中=1 自身→シーク始めた時。 自身→マウス離した時は~ ドラッグ中=0 自身→シーク完了した時。 更新。 ・{非公開}F値{=0} ・{非公開}値取得~ それはF値 ・{非公開}値設定(V)~ もし、Vが(自身→最小値)以下なら、F値=自身→最小値 違えばもし、Vが(自身→最大値)以上なら、F値=自身→最大値 違えば、F値=V 更新。 ・{非公開}F最大値{=0} ・{非公開}F最小値{=0} ・{非公開}最大値取得~それはF最大値 ・{非公開}最小値取得~それはF最小値 ・{非公開}最大値設定(V)~F最大値=V;更新。 ・{非公開}最小値設定(V)~F最小値=V;更新。 ・値範囲~_=(自身→最小値の絶対値)+(自身→最大値の絶対値) ・{非公開}F背景色{=$333333} ・{非公開}背景色取得~ それはF背景色 ・{非公開}背景色設定(V)~ F背景色=V;更新。 ・背景色 ←背景色設定 →背景色取得 ・{非公開}F反転色{=$80FF00} ・{非公開}反転色取得~ それはF反転色 ・{非公開}反転色設定(V)~ F反転色=V;更新。 ・{非公開}分割点取得~ 割合 = 自身→値/値範囲 それ = ROUND((自身→W-15)*割合) ・{非公開}分割点設定(V)~ 割合 = V/(自身→W-15) 値 = ROUND(割合*値範囲) 更新。 ・背景色 ←背景色設定 →背景色取得 ・反転色 ←反転色設定 →反転色取得 ・値 ←値設定 →値取得 ・最大値 ←最大値設定 →最大値取得 ・最小値 ←最小値設定 →最小値取得 ・分割点 ←分割点設定 →分割点取得 ・{非公開}更新~ 自身をシステム 画面クリア 塗り色 = 自身→背景色 線色 = 黒色 線太さ = 1 自身の0,0から自身→W,自身→Hへシステム 四角。 塗り色 = 自身→反転色 線色 = 自身→反転色 自身の1,1から分割点,自身→H-1へシステム 四角。 塗り色 = ウィンドウ背景色 線色 = 黒色 自身の分割点-1,0から分割点+16,自身→Hへ8,8でシステム 角丸四角。 自身→変更した時。 ・{イベント}シーク始めた時 ・{イベント}シーク完了した時 ・{イベント}変更した時 //サンプルプログラム あとはシークバー。 そについて Hは10 最大値は100 変更した時は~いのテキストは(あの値) いとはラベル。 名前 コメント
https://w.atwiki.jp/isoroku_be/pages/95.html
情報 作者名:SWinX 引用元:なでしこ初心者掲示板「アイデア1 部分コピーの実施例」 概要 1/4円、1/4円弧を描画します。 解説 引数 OBJ:描画先 X1,Y1:始点(左上座標) X2,Y2:終点(右下座標) S:「右上」or「右下」or「左上」or「左下」 サンプルプログラム 線色は赤色。 塗りスタイル=「透明」。 母艦の0,100から100,200へ"左上"を四半円。 母艦の0,100から100,200へ"右下"を四半円。 塗りスタイル=「格子」。 母艦の200,100から300,200へ"右上"を四半円。 //本体 ●四半円({グループ}OBJのX1,Y1からX2,Y2へSを) CWとは整数=X2-X1 CHとは整数=Y2-Y1 SXとは整数。SYとは整数。//欲しい部分の左上座標 Sで条件分岐 "左上"ならば、SX=0。SY=0 "右上"ならば、SX=CW。SY=0 "左下"ならば、SX=0。SY=CH "右下"ならば、SX=CW。SY=CH Aをイメージとして作成 A→可視はオフ A→サイズ="0,0,{CW*2},{CH*2}" A→画像="" OBJの(X1-SX),(Y1-SY),CW*2,CH*2をAの0,0へ画像部分コピー Aの0,0からCW*2,CH*2へ円 AのSX,SY,CW,CHをOBJのX1,Y1へ画像部分コピー A→壊す。 大小チェックをしていないので、X1,Y1は左上座標、X2,Y2は右下座標を指定する必要があります。 -- SWinX (2008-09-28 22 35 26) 修正させていただきましたー。ありがとうございました -- 管理人 (2008-09-30 21 30 48) 名前 コメント
https://w.atwiki.jp/oh17/pages/51.html
2015.9.27 Pangです。 CGIの組み方ということですが、基本的にはC++といった他言語と同じです。 私も他言語はCぐらいしか、しかも最低限しか使えませんが。 perlの構成はいろいろあると思います。 私は独学でやっているので、頭のいい方はもっと負荷のかからない方法があるのかもしれません。 まぁ、簡単に構成のようなものを説明します。 このプログラムの基本はデータの読み書きです。 簡単な例を示します。 たとえばMONSTERSの戦闘についてです。 以下の3つのプログラムで構成するとします。 ちなにperlのプログラムの拡張子は.cgiです。 main.cgi(メインプログラム(ログインページ)) fight.cgi(戦闘プログラム) data.cgi(セーブデータ)-名前、パスワード、プレイヤーの階数、所持モンスター等 まずログインページ(main.cgi)を起動します。 事前に入力された名前、パスワードが等しいかどうか、セーブデータを開き、照合させます。 照合の結果、正しい場合はログインページ(main.cgi)に、正しくない場合はエラ-へ。 ログインページに入りましたら、戦闘に行くというボタンがありますので、そのボタンをクリックします。 クリックすると、戦闘プログラム(fight.cgi)に飛びます。 戦闘プログラムではセーブデータを元にプレイヤーの階数を照合し、出現モンスターを決定します。 プログラムによって、戦闘した後は経験値、お金等の処理を行い、セーブデータに上書きをします。 その後、ログインページに飛ぶという感じです。 まぁ、簡単な概要程度ですので、ほとんど説明になっていないかもしれません。 まとめますと、プログラムとセーブデータがあって、常時プログラムで起こった事象をセーブデータに書き込みをしている感じです。 もし興味があるのでしたら、もっと詳しくお教えします。 といいますか、来年度から就職に伴い、私の生活環境が変わってしまいますので、 管理時間を考慮したうえで、このMONSTERSを引き継いでいきたいと思っています。 もし、プログラムに興味のある方、または管理側でいろいろやってみたい方がいましたら、 私まで連絡ください。 僕が知りたいだけという自己中で全くもって MONSTERSに関係ない理由でつくりました。 削除してほしかったら言ってください。-(DragonX) ちなみに、どんなかんじで講座してくのは全くもって 無計画です。つまりこれは私の 無計画による関係なしの自己中によって作られました。 一応コメント欄だけ作っておきます そこをご了承ください いっそのことゲームの話でもすっかー -- (アンパンマン) 2014-12-20 23 10 17 なんでやねん -- (くるぶし) 2014-12-20 23 10 31 ある過去にあったゲームの類似を 作ってみたいと思います。 こんなゲームでした。 なにか助言はいただけませんか? URL https //www.youtube.com/watch?v=1PZcGSV_rRg -- (DragonX) 2015-01-26 20 00 18 個人的にC++はよく使っているのですが、CGIは組んだことないので、 どうやって組んでいくかとかの概要の考察とか書いてみてもらえないでしょうか? -- (aruaru) 2015-09-22 14 35 48 Pangさんが降臨されたw 説明ありがとうございます。 -- (DragonX) 2015-09-29 22 04 10 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/ankundora/pages/16.html
プログラム用語辞典 他の言語と被った用語が出てきた場合はそのすべてに言語の種類を書いておいてください あ い インクルード文 う え エスケープシーケンス 演算 計算処理の事 演算子 演算を表す記号 お オブジェクトファイル オペランド 演算の対象となる値のこと か 拡張子 関係演算子 き く け こ コマンドプロンプト 文字入力による「コマンド」という命令を使って、さまざまな処理を行う。 コマンドはキーボードから入力することで実行され、実行結果は文字として画面に表示される。 「スタート」→「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」で起動できる コメント コンパイル さ し す せ そ ソースファイル た ち つ て 定数 デバッグ と な に ぬ ね の は バグ ひ ビルド ふ フォア文 for文 フォー文 for文 プリプロセッサ命令 コンパイルの前に行われる処理のこと インクルード文や定数定義などがあり、「#」から始まる プリントエフ printf へ 変数 ほ ホワイル文 while文 ま み む め も や ゆ よ ら り リンク る れ ろ 論理演算子 わ ワイル文 while文 を ん A B .bmp ビットマップ形式の画像データファイルに付く拡張子のこと C .cpp C++(plus plus)のソースコードに付く拡張子の事 D E else文 .exe WindowsやMS-DOSなどで標準的に用いられる実行ファイル形式に付く拡張子のこと F for文 G H I if文 J K L M N O .obj オブジェクトファイルの拡張子のこと P printf Q R S T .txt テキスト形式のファイルで標準的に用いられる拡張子のこと U V W while文 X Y Z ¥ ¥n
https://w.atwiki.jp/news4xna/pages/85.html
ここでは、オーディオエンジンを初期化し、サウンドとウェーブバンクを読み込み、Cueオブジェクトを介して音声を再生する方法を説明します。 ノート: この作例では、すでにXACTプロジェクト(.xapファイル)が作成してあるものとします。その方法を知りたいなら、How to Add a Sound File to Your Game Using XACT?を参照してください。 音声を再生する方法 To play a sound 1. 保存してあるXACTプロジェクトファイル(.xap)ファイルを、XNA ゲームプロジェクトのディレクトリに移動します。(How to Add a Sound File to Your Game Using XACT?を参照してください)。 2. .xapファイルが参照しているWAVEファイルをXNAゲームプロジェクトのディレクトリに追加します。 3. ソリューションエクスプローラ上のプロジェクトのアイコンを右クリックします。 4.「Add」(「追加」かも)を選択し、次に「既存のアイテム」を選択します。 5. プロジェクトのディレクトリから、.xapファイルを選択します。.xapファイルがプロジェクトに追加されるはずです。デフォルトでは、それはコンテントパイプラインによって処理され、ゲームをビルドするときに自動的にウェーブバンクとサウンドバンクもビルドされます。 6. ゲームのコードを編集します。ゲームが始まったときに新しいAudioEngineオブジェクトを作成します。その際にコンストラクタの引数にXACTプロジェクトが出力したXACTグローバルセッティングファイルのファイル名を指定します。拡張子 .xgs を付けるのを忘れないでください。 7. XACTプロジェクト内の全てのウェーブバンクに対してWaveBankオブジェクトを作成します。コンストラクタにはAudioEngineとXACTプロジェクトが出力したXACTウェーブバンクのファイル名を渡してください。拡張子 .xwb を付けるのを忘れないでください。 8. XACTプロジェクト内の全てのサウンドバンクに対してSoundBankオブジェクトを作成します。コンストラクタにはAudioEngineとXACTプロジェクトが出力したXACTサウンドバンクのファイル名を渡してください。拡張子 .xsb を付けるのを忘れないでください。 9. オーディオエンジンがオーディオデータを処理するために、ゲームがUpdateされている間にAudioEngineのUpdateメソッドを実行してください。 10. SoundBankオブジェクトのPlayCueメソッドを実行します。引数に再生したいキューを指定します。 #region Using Statements using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; #endregion public class Game1 Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; ContentManager content; //オーディオAPIのコンポーネント AudioEngine audioEngine; WaveBank waveBank; SoundBank soundBank; public Game1() { graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); } protected override void Initialize() { audioEngine = new AudioEngine("TestSounds.xgs"); waveBank = new WaveBank(audioEngine, "TestWaveBank.xwb"); soundBank = new SoundBank(audioEngine, "TestSoundBank.xsb"); soundBank.PlayCue("kaboom"); base.Initialize(); } protected override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) { } } protected override void UnloadGraphicsContent(bool unloadAllContent) { if (unloadAllContent == true) { content.Unload(); } } protected override void Update(GameTime gameTime) { // Allows the default game to exit on Xbox 360 and Windows if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); audioEngine.Update(); base.Update(gameTime); } protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.CornflowerBlue); base.Draw(gameTime); } } Remarks 再生されているCueインスタンスは、名前が同じであっても違うものです。ですから同じキューを同時に複数鳴らすことができますよ。
https://w.atwiki.jp/nicepaper/pages/140.html
このページでは、phpプログラミングの基本であるif文とswitch文について解説していきます。 if文とswitch文は、条件によって処理を変えたい場合に使う関数です。 このページでは二つの簡単な概念のみを説明しています。 より実践向けののプログラムについては、次のページをご覧ください。 if関数を使ったプログラム 目次 if文 コード 実行結果 switch文 コード if文 大まかなif文のイメージ if(条件) 処理; if (条件1){条件1を満たすの時の処理} else {条件1を満たさない時の処理} if (条件1){条件1を満たす時の処理} elseif(条件2){条件2を満たす時の処理} else{条件1も条件2も満たさない時の処理} 例えば、、、 コード ?php $girlfriend = 10; if ($girlfriend 5) { echo "彼はひどい男です。"; } else { echo "普通でしょう。ただ一人以上だったら少しひどい男です。"; } ? などのように使えます。 実行結果 この場合は 彼はひどい男です。 と表示されます。 $girlfriendに代入する値が5以下の場合、 普通でしょう。ただ一人以上だったら少しひどい男です。 が表示されます。 これは自分で値を代入しているので、わかりきった答えしかかえってきませんが実際には、 他の関数によって何らか値を取得してその取得した値に応じて別々の処理をする場合 に使うので必須と言える関数です。 switch文 ifとelseifを組み合わせていく事によって一応場合分けは出来ますが、考えなくてはいけない場合が多くなってきた時、switch文の出番です。 大まかなswitch文のイメージ ?php $a = 数値を取得する関数、数値など; switch ($a){ case 0 変数が0だった場合の処理; break; case 1 変数が1だった場合の処理; break; case 2 変数が2だった場合の処理; break; default 0、1、2以外の場合の処理; } ? 例えば変数の部分で曜日番号を取得して曜日によって表示を変える事ができます。 switch文を使用する事によって、場合によって処理を変えていく事が可能になります。 次にサンプルをのせておきます。 mt_rand(0,5)とは0から5までの数字をランダムに選んでくれる関数です。 コード ?php switch(mt_rand(0,5)){ case 0 echo "今日の運勢はとてもいいです。"; break; case 1 echo "今日の運勢はまあまあいいです。"; break; case 2 echo "今日の運勢は普通です。"; break; case 3 echo "今日の運勢はまあまあ悪いです。"; break; case 4 echo "今日の運勢はとても悪いです。"; break; case 5 echo "あなたは今日死にます。"; break; } ? 実行結果は全部で6パターンあるので、皆さんも占ってみてください。 因みに某IT企業の占いサービスはこのように全てランダムに表示させているみたいです。 以上
https://w.atwiki.jp/opengl/pages/217.html
取りあえず、.wavファイルのヘッダを読み込んで表示してみます。 #include stdio.h #include string.h #define FileName test.wav #pragma pack(push,1) struct WaveFileHeader{ char Riff[4]; // RIFFヘッダ unsigned int FileSize; // ファイルサイズ - 8 char Wave[4]; // WAVEヘッダ }; struct tagChank{ unsigned char Fmt[4]; // fmt チャンク unsigned int FmtSize; // fmt チャンクのバイト数 }; struct WaveFormat{ unsigned short FormatTag; // フォーマットID unsigned short Channels; // チャンネル数 unsigned int SamplingRate; // サンプリングレート unsigned int BytesPerSec; // データ速度 (Byte/sec) unsigned short BlockAlign; // ブロックサイズ unsigned short BitsPerSample; // サンプルあたりのビット数 }; #pragma pack(pop) bool readfmtChunk(FILE *fp, WaveFormat* waveFmtPcm){ if(fread(waveFmtPcm, sizeof(WaveFormat), 1, fp) != 1)return false; printf( データ形式 %u (1 = PCM)\n , waveFmtPcm- FormatTag); printf( チャンネル数 %u\n , waveFmtPcm- Channels); printf( サンプリング周波数 %lu [Hz]\n , waveFmtPcm- SamplingRate); printf( バイト数 / 秒 %lu [bytes/sec]\n , waveFmtPcm- BytesPerSec); printf( バイト数×チャンネル数 %u [bytes]\n , waveFmtPcm- BlockAlign); printf( ビット数 / サンプル %u [bits/sample]\n , waveFmtPcm- BitsPerSample); return true; } bool WaveHeaderRead(char *wavefile){ WaveFileHeader waveFileHeader; WaveFormat waveFmtPcm; tagChank chank; long fPos, len; FILE *fp; errno_t err; if (err=fopen_s( fp,wavefile, rb ) !=0){ printf( %sをオープンできません\n , wavefile); return false; } printf( \n%s \n , wavefile); // ヘッダ情報 if (fread( waveFileHeader, sizeof waveFileHeader, 1, fp) != 1){ printf( %ld で読み込み失敗\n , ftell(fp)); fclose(fp); return false; } if(strncmp( waveFileHeader.Riff, RIFF , 4) != 0){ printf( RIFF フォーマットでない\n ); fclose(fp); return false; } // WAVE ヘッダ情報 if (memcmp(waveFileHeader.Wave, WAVE , 4) != 0){ printf( WAVE が無い\n ); fclose(fp); return false; } // 4Byte これ以降のバイト数 = (ファイルサイズ - 8)(Byte) len = waveFileHeader.FileSize; // チャンク情報 while (fread( chank, sizeof chank, 1, fp) == 1){ if(memcmp( chank.Fmt, fmt , sizeof chank.Fmt) == 0){ len=chank.FmtSize; printf( \ fmt \ の長さ %ld [bytes]\n\n , len); fPos = ftell(fp); if(! readfmtChunk( fp, waveFmtPcm))return false; fseek(fp, fPos + len, SEEK_SET); }else if(memcmp(chank.Fmt, data , 4) == 0){ len = chank.FmtSize; printf( \n\ data\ の長さ %ld [bytes]\n , len); fPos = ftell(fp); fseek(fp, len + fPos - 4, SEEK_SET); break; }else{ len=chank.FmtSize; printf( \ %c%c%c%c\ の長さ %ld [bytes]\n\n , chank.Fmt[0],chank.Fmt[1], chank.Fmt[2],chank.Fmt[3], len); fPos = ftell(fp); fseek(fp, fPos + len, SEEK_SET); } } fclose(fp); return true; } void main(int argc, char *argv[]){ WaveHeaderRead(FileName); getchar(); }